/*
 * @Author       : lg
 * @Date         : 2022-06-24 22:07:20
 * @LastEditors  : lg
 * @LastEditTime : 2022-06-24 22:31:32
 * @FilePath     : \ws-server\server\globalWs.js
 * @description  :
 */

/*
* 实现
* 1. 双向通信
* 2. 自主更新/多个客户端同时更新
* */

/*
WebSocket 的优缺点
WebSocket 协议是一种双向通信协议，它使用单个 TCP 连接实现全双工通信，这使它比传统的 HTTP 协议更有效率。

WebSocket 优点
双向通信： WebSocket 协议支持双向通信，使服务器和客户端之间的通信更加方便和快捷。
实时性： 由于 WebSocket 协议使用单个 TCP 连接实现全双工通信，因此它提供了实时通信，使服务器和客户端之间的通信速度更快。
较少的通信开销： 相比于 HTTP 协议，WebSocket 协议的通信开销较少，因为 HTTP 协议需要频繁在请求和响应之间进行建立和断开连接。前面我们写过相关对比：WebSocket 与 Socket、TCP、HTTP 的关系及区别
可扩展性： WebSocket 协议可以轻松地扩展，从而满足更多不同应用程序的需求。
WebSocket 缺点
兼容性： WebSocket 协议不是所有浏览器都支持，尤其是在旧版浏览器中可能会出现兼容性问题。
安全性： 由于WebSocket 协议的双向通信机制，它可能会面临安全隐患，例如 XSS 和 CSRF 攻击等。
服务器需求： WebSocket 协议需要服务器支持，这意味着需要更高效的服务器硬件和软件。
数据包大小的限制： WebSocket 协议发送的数据包不能超过 2GB。
* */

// 获得服务的类
const { WebSocketServer } = require('ws');
// 创建实例
const wsServer = new WebSocketServer({port: 3000});
// 监听连接事件
wsServer.on('connection', ws => {
    // 连接成功
    console.info('connected');
    // 监听客户端是否有信息
    ws.on('message', msg=>{
        console.info('server收到了信息',msg.toString());
        // 服务端向客户端发送信息
        setTimeout(()=> {
            ws.send('服务端已经收到了信息并返回:'+msg.toString());
        },2000);
    });
});
